﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BEL;

namespace Web_Guia_Digital_Georeferenciada
{
    public partial class VisualizacionDeComercios : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                Session["ComercioBuscado"] = Comercio.BuscarComercioPorId(1);////para probar la visualizacion


                string ComId = Convert.ToString(Request.QueryString["ComercioId"]);
                if (!string.IsNullOrEmpty(ComId))
                {
                    Comercio com = Comercio.BuscarComercioPorId(Convert.ToInt32(ComId));
                    Session["ComercioBuscado"] = com;
                    lblNombre.Text = com.ComercioNombre;

                    //imgLogo.ImageUrl = com.Comlogo;
                    direccion.Text = com.ComercioDireccion;
                    telefono.Text = com.ComercioTelefono;
                    linkWeb.Text = com.ComercioWeb;
                    barrio.Text = com.Barrio.BarNombre;
                    email.Text = com.ComercioEmail;
                    listarRedesSociales(com);
                    listarRubros(com);
                    listarSucursales(com);
                    cargarComentarios(com);
                    calularPromedio();
                }
                else {
                    Comercio comercio = (Comercio)Session["ComercioBuscado"];
                    if (comercio != null)
                    {

                        lblNombre.Text = comercio.ComercioNombre;
                       // imgLogo.ImageUrl = comercio.Comlogo;
                        direccion.Text = comercio.ComercioDireccion;
                        telefono.Text = comercio.ComercioTelefono;
                        linkWeb.Text = comercio.ComercioWeb;
                        barrio.Text = comercio.Barrio.BarNombre;
                        email.Text = comercio.ComercioEmail;
                        listarRedesSociales(comercio);
                        listarRubros(comercio);
                        listarSucursales(comercio);
                        cargarComentarios(comercio);
                        calularPromedio();
                    }
                }
                              
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }    
        }

        public void vaciar()
        {
            lblNombre.Text = "";
            imgLogo.ImageUrl = "";
            direccion.Text = "";
            telefono.Text = "";
            linkWeb.Text = "";
            barrio.Text = "";
            email.Text = "";
        }

        public void listarRedesSociales(Comercio comercio)
        {
            try
            {                
                if (comercio != null)
                {
                    List<RedSocial> lstredes = RedSocial.BuscarRedesDeComercio(comercio.ComercioId);
                    gridRedes.DataSource = lstredes;
                    gridRedes.DataBind();
                }
                else
                {
                    lblErrorRedes.Text = "El comercio no tiene redes para mostrar";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public void listarRubros(Comercio comercio)
        {
            try
            {
                if (comercio != null)
                {
                    List<Rubro> lstRubros = Rubro.BuscarRubrosXComercio(comercio.ComercioId);
                    gridRubros.DataSource = lstRubros;
                    gridRubros.DataBind();
                }
                else
                {
                    lblErrorRubros.Text = "El comercio no tiene rubros para mostrar";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public void listarSucursales(Comercio comercio)
        {
            try
            {
                if (comercio != null)
                {
                    List<Comercio> lstSucursales = Comercio.BuscarSucursales(comercio.ComercioId);
                    gridSucursales.DataSource = lstSucursales;
                    gridSucursales.DataBind();
                }
                else
                {
                    lblErrorSucursales.Text = "El comercio no tiene sucursales para mostrar";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void btnAgregarPuntaje_Click(object sender, EventArgs e)
        {
            try
            {
                Comercio comercio = (Comercio)Session["ComercioBuscado"];
                Cliente cliente = (Cliente)Session["Cliente"];
                if (cliente != null)
                {
                    int puntuacion = Convert.ToInt32(idpuntuacion.Value) + 1;
                    if (Calificacion.ValidarCalificacion(comercio, cliente))
                    {
                        Boolean alta = BEL.Calificacion.AltaCalificacion(comercio, cliente, puntuacion);
                        if (alta)
                        {
                            calularPromedio();
                            lblMensaje.Text = "Su calificacion fue guardada con exito";

                        }
                        else
                        {
                            lblMensaje.Text = "No se pudo guardar su calificacion";
                        }
                    }
                    else
                    {
                        lblMensaje.Text = "Usted ya califico este comercio";
                    }
                }
                else
                {
                    lblMensaje.Text = "Debe estar logueado para poder calificar un comercio";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
            
        }

        protected void btnNuevoComentario_Click(object sender, EventArgs e)
        {
            try
            {
                Comercio comercio = (Comercio)Session["ComercioBuscado"];
                Cliente cliente = (Cliente)Session["Cliente"];
                String comentario = txtNuevoComentario.Text;
                if (cliente != null)
                {
                    if (!String.IsNullOrEmpty(comentario))
                    {
                     

                         int puntuacion = Convert.ToInt32(idpuntuacion.Value);
                         Boolean alta = Comentario.AltaComentario(comercio, cliente, comentario, puntuacion);
                        if (alta)
                        {
                            cargarComentarios(comercio);
                            txtNuevoComentario.Text = "";

                        }
                        else
                        {
                            lblComentarios.Text = "No se pudo guardar su comentario";
                        }
                    }
                    else
                    {
                        lblComentarios.Text = "Debe escribir un comentario para ser ingresado";
                    }
                }
                else
                {
                    lblComentarios.Text = "Debe estar logueado para hacer un comentario del comercio";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public void calularPromedio()
        {
            try
            {
                Comercio comercio = (Comercio)Session["ComercioBuscado"];
                int ret = Calificacion.buscarPromedio(comercio);
                lblPuntaje.Text = Convert.ToString(ret);
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }

        }

        public void cargarComentarios(Comercio comercio)
        {
            try
            {
                if (comercio != null)
                {
                    List<Comentario> lstcomentarios = Comentario.BuscarComentarios(comercio.ComercioId);
                    menuComentarios.Items.Clear();
                    if (lstcomentarios.Count() > 0)
                    {
                        foreach (Comentario com in lstcomentarios)
                        {
                            MenuItem mi = new MenuItem();
                            mi.Value = Convert.ToString(com.Clienteid);
                            mi.Text = com.ValComentario;
                            menuComentarios.Items.Add(mi);
                        }
                    }
                }
                else
                {
                    lblComentarios.Text = "El comercio no tiene comentarios aun, sea el primero en dar su opinion";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public string construirMenu()
        {
            return null;
        }
       
    }
}